package J21;

public class J21_String {

	public static void main(String[] args) {
		// 문자열 클래스 다루기 
		// 주민번호를 이용해서 성별확인
		// 9 : 남자
		// 8 : 여자
		String jumin = "123456-9876543";
		
		System.out.println( "문자열 길이 : " + jumin.length() );
		System.out.println( "성별문자 : " + jumin.charAt(7) );
		System.out.println( "주민번호 식별문자 : " + jumin.substring( 7 ) );
		System.out.println( "성별문자 : " + jumin.substring( 7,8 ) );
		
		String msg = "hello";
		
		if ( msg ==  "hello" )
			System.out.println( "일치함!" );
		else
			System.out.println( "일치안함!" );
		
		String msg2 = "hello";
		
		if ( msg ==  msg2 )
			System.out.println( "일치함!" );
		else
			System.out.println( "일치안함!" );
		
		String msg3 = new String("Java");
		String msg4 = new String("Java");
		
		if ( msg3 ==  msg4 )
			System.out.println( "일치함!" );
		else
			System.out.println( "일치안함!" );
		// msg3과 msg4가 메모리에 생성된 위치(주소)가 다름
		// String 객체 비교시 == 연산자는
		// 참조된 주소의 동질성을 확인함 
		
		// msg(리터럴)와 msg5(new) 비교?
		
		String msg5 = new String("hello");
		
		if ( msg ==  msg5 )
			System.out.println( "일치함!" );
		else
			System.out.println( "일치안함!" );
		// msg과 msg5는 메모리에 생성된 위치(주소)가 다름
		// == 연산자로 비교해보면 '불일치'로 출력
		
		// 문자열 객체의 값을 비교할때에는 
		// == 연산자 대신 equals 메서드를 사용해야 함
		if (msg3.equals(msg4))
			System.out.println( "일치함!" );
		else
			System.out.println( "일치안함!" );
		
		if (msg.equals(msg5))
			System.out.println( "일치함!" );
		else
			System.out.println( "일치안함!" );
		
		
		// 문자열 연결시 + 연산자를 사용하지 말고
		// 필요없는 객체 생성이 동반되어 
		// 메모리 사용율과 CPU 자원이 소모
		// 따라서, StringBuilder나 StringBuffer를
		// 사용할 것을 추천!!
		
		String sql ="update book " + 
					"set title = ?,publisher =?, author =?" +
					", regdate = sysdate " +
					" where id =?";
		StringBuilder sql2 = new StringBuilder();
		sql2.append(" update book ")
			.append(" set title = ?, publisher = ?, author = ?, ")
			.append(" regdate = sysdate ")
			.append(" where id = ? ");
		
		System.out.println(sql2);	// 자동 형변환
		String tmp = sql2.toString();			// 수동 형변환		
		System.out.println(tmp);
		
		
		
		
		
		
	}

}
